package com.otdemo.dao;

import java.util.ArrayList;
import java.util.List;

import com.otdemo.entity.Stu;
import com.otdemo.util.DBUtil;

/**
 * 对用户类进行增删改查
 * @author LEI
 *
 */
public class StuDao extends DBUtil {

	//全查
	public List<Stu> findAll(){
//		1. 声明一个集合，存放查到的数据
		List<Stu> us=new ArrayList<Stu>();
//		2. 写明查询指令
		String sql="select * from tb_Stu";
//		3. 打开数据库
		try {
			open_db();
//			把链接和指令给ps去执行
			ps=con.prepareStatement(sql);
//			ps执行查询，查询结果放到resultSet结果集里
			rs=ps.executeQuery();
//			循环解析数据，把数据放在准备好的集合里
			while(rs.next()) {
//				循环内部声明一个临时变量User类，用来保存每次获取到的数据
				Stu u=new Stu();
//				把每次获取到的值，存到这个临时变量里
				u.setsId(rs.getInt("s_id"));
				u.setsName(rs.getString("s_name"));
//				每次临时变量的值装满后，就把临时变量，装到准备好的集合里
				us.add(u);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
//			无论如何都要关闭数据库
			close_db();
		}
//		返回装满数据的集合
		return us;
	}
	
	//单查
	public Stu findById(int id) {
//		1. 声明一个对象，存放查到的数据
		Stu u=new Stu();
//		2. 写明查询指令
		String sql="select * from tb_Stu where s_id=?";
//		3. 打开数据库
		try {
			open_db();
//			把链接和指令给ps去执行
			ps=con.prepareStatement(sql);
//			添加参数
			ps.setInt(1, id);
//			ps执行查询，查询结果放到resultSet结果集里
			rs=ps.executeQuery();
//			循环解析数据，把数据放在准备好的集合里
			while(rs.next()) {
//				把获取到的值，存到这个临时变量里
				u.setsId(rs.getInt("s_id"));
				u.setsName(rs.getString("s_name"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
//			无论如何都要关闭数据库
			close_db();
		}
//		返回装满数据的集合
		return u;
	}
	
	//添加
	public boolean add(Stu u) {
//		1. 声明一个变量，存放添加结果
		int result=0;
//		2. 写明添加指令
		String sql="insert tb_Stu values(null,?)";
//		3. 打开数据库
		try {
			open_db();
//			把链接和指令给ps去执行
			ps=con.prepareStatement(sql);
//			执行查询之前，先给sql问号赋值
			ps.setString(1, u.getsName());
//			ps执行添加，添加结果放到resultSet变量里
			result=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
//			无论如何都要关闭数据库
			close_db();
		}
//		返回添加结果是否大于0
		return result>0;
	}
	
	//修改
	public boolean modify(Stu u) {
//		1. 声明一个变量，存放添加结果
		int result=0;
//		2. 写明修改指令
		String sql="update tb_Stu set s_name=? where s_id=?";
//		3. 打开数据库
		try {
			open_db();
//			把链接和指令给ps去执行
			ps=con.prepareStatement(sql);
//			执行查询之前，先给sql问号赋值
			ps.setString(1, u.getsName());
			ps.setInt(2, u.getsId());
//			ps执行修改，添加结果放到resultSet变量里
			result=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
//			无论如何都要关闭数据库
			close_db();
		}
//		返回修改结果是否大于0
		return result>0;
	}
	
	//删除
	public boolean remove(int id) {
//		1. 声明一个变量，存放删除结果
		int result=0;
//		2. 写明删除指令
		String sql="delete from tb_Stu where s_id=?";
//		3. 打开数据库
		try {
			open_db();
//			把链接和指令给ps去执行
			ps=con.prepareStatement(sql);
//			执行查询之前，先给sql问号赋值
			ps.setInt(1, id);
//			ps执行修改，添加结果放到resultSet变量里
			result=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
//			无论如何都要关闭数据库
			close_db();
		}
//		返回删除结果是否大于0
		return result>0;
	}

	
}
